<?php

namespace Mouta\SeowebBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Security\Core\SecurityContext;
use Mouta\SeowebBundle\Entity\Usuario;
use Mouta\SeowebBundle\Entity\Pagina;
use Mouta\SeowebBundle\Entity\Categoria;
use Mouta\SeowebBundle\Entity\Asignacion;
use Mouta\SeowebBundle\Entity\Servicio;
use Mouta\SeowebBundle\Entity\Click;
use Mouta\SeowebBundle\Form\UsuarioType;
use Mouta\SeowebBundle\Form\ContactoType;
use Mouta\SeowebBundle\Form\DatosUserType;
use Mouta\SeowebBundle\Form\SitioType;
use Mouta\SeowebBundle\Form\SitiomodType;
use Mouta\SeowebBundle\Form\CreditoType;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;

class AsignacionController extends Controller
{

    public function asignar_credito_megustaAction($id)
    {
        $em = $this->getDoctrine()->getEntityManager();
        $pagina_id = $id;
        $usuario = $this->get('security.context')->getToken()->getUser();
        $usuario_id = $usuario->getId();


        $peticion = $this->getRequest();
        $formulario = $this->createForm(new CreditoType());


        if ($peticion->getMethod() == 'POST')
        {

            $formulario->bindRequest($peticion);

            if($formulario->isValid())
            {

                $data = $formulario->getData();
                $credito = $data["credito"];

                if($usuario->getCredito() < $credito){
                    $this->get('session')->setFlash('info',
                        'Usted no tiene esa cantidad de credito'
                    );
                    return $this->redirect($this->generateUrl('mis_sitios'));
                }else{

                    $em = $this->getDoctrine()->getEntityManager();


                    $usuario->setCredito($usuario->getCredito() - $credito);
                    $em->persist($usuario);
                    $em->flush();

                    $asignacion = $em->getRepository('SeowebBundle:Asignacion')->findOneBy(array(
                        'pagina' => $id,
                        'servicio' => '1'
                    ));


                    $asignacion->setCredito($asignacion->getCredito() + $credito);
                    $em->persist($asignacion);
                    $em->flush();


                    $this->get('session')->setFlash('info',
                        'Los creditos se han agregado correctamente'
                    );


                    return $this->redirect($this->generateUrl('mis_sitios'));
                }

            }
        }

        return $this->render(
            'SeowebBundle:Asignacion:asignar_credito_megusta.html.twig',
            array('formulario' => $formulario->createView(),
                'id' => $id,
                'usuario_id' => $usuario_id,
            ));

    }


    public function asignar_credito_masunoAction($id)
    {
        $em = $this->getDoctrine()->getEntityManager();
        $pagina_id = $id;
        $usuario = $this->get('security.context')->getToken()->getUser();
        $usuario_id = $usuario->getId();


        $peticion = $this->getRequest();
        $formulario = $this->createForm(new CreditoType());


        if ($peticion->getMethod() == 'POST')
        {

            $formulario->bindRequest($peticion);

            if($formulario->isValid())
            {

                $data = $formulario->getData();
                $credito = $data["credito"];

                if($usuario->getCredito() < $credito){
                    $this->get('session')->setFlash('info',
                        'Usted no tiene esa cantidad de credito'
                    );
                    return $this->redirect($this->generateUrl('mis_sitios'));
                }else{

                    $em = $this->getDoctrine()->getEntityManager();


                    $usuario->setCredito($usuario->getCredito() - $credito);
                    $em->persist($usuario);
                    $em->flush();

                    $asignacion = $em->getRepository('SeowebBundle:Asignacion')->findOneBy(array(
                        'pagina' => $id,
                        'servicio' => '2'
                    ));


                    $asignacion->setCredito($asignacion->getCredito() + $credito);
                    $em->persist($asignacion);
                    $em->flush();


                    $this->get('session')->setFlash('info',
                        'Los creditos se han agregado correctamente'
                    );


                    return $this->redirect($this->generateUrl('mis_sitios'));
                }

            }
        }

        return $this->render(
            'SeowebBundle:Asignacion:asignar_credito_masuno.html.twig',
            array('formulario' => $formulario->createView(),
                'id' => $id,
                'usuario_id' => $usuario_id,
            ));

    }

}